package com.example.lt.service.user;

import com.baomidou.mybatisplus.extension.service.IService;
import com.example.lt.entity.queryPage.BasePage;
import com.example.lt.entity.user.Follow;
import com.fasterxml.jackson.databind.ser.Serializers;

import java.util.Collection;

/**
 * @Author 小涛Tao
 * @Date: 2024/07/29/20:02
 * version 1.0 注释：
 **/
public interface FollowService extends IService<Follow> {

    /**
     * 关注 或 取关
     * @param userId 用户id
     * @param followsUserId 目标id
     * @return
     */
    boolean follows(Long userId, Long followsUserId);

    /**
     * 获取当前用户的关注数量
     * @param userId
     * @return
     */
    int getFollowCount(Long userId);

    /**
     * 获取当前用户的粉丝数量
     * @param userId
     * @return
     */
    int getFansCount(Long userId);

    /**
     * 获取关注人员的id，并且按照关注时间排序，关注越晚排在越前，倒序排序
     * @param userId
     * @param basePage
     * @return
     */
    Collection<Long> getFollow(Long userId, BasePage basePage);

    /**
     * 获取粉丝的id，并按照关注时间排序，关注越晚排在越前，倒序排序
     * 分为获取 userId 的所有粉丝，和分页获取 userId 的粉丝
     * @param userId 用户id
     * @param basePage 为 null 时获取全部，否则分页获取
     * @return 粉丝的 id 集合
     */
    Collection<Long> getFans(Long userId, BasePage basePage);

    /**
     * userId 是否关注 followId
     * @param followId 被关注者
     * @param userId 用户
     * @return
     */
    Boolean isFollows(Long followId, Long userId);
}
